# @Time : 2024-10-24 10:05
# @Author : Fioman 
# @Phone : 13149920693

"""
抽象基类:
1) 不能被实例化
2) 用来定义接口,可以包含抽象方法,普通的方法可以有吗?子类必须实现这些抽象方法,不然子类也是抽象类
3) 强制约束,通过继承约束子类必须实现这些抽象方法,不然不能被实例化
4) 抽象基类中可以有普通的方法,类方法,类属性,但是必须要有一个抽象方法.
"""
from abc import ABC, abstractmethod


class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

    name = "抽象基类Animal"

    @classmethod
    def print_class_name(cls):
        print(cls.name)

    # 普通的成员方法
    def show_name(self):
        print("抽象基类中可以有普通的方法: ", self.name)


class Dog(Animal):
    def make_sound(self):
        return "Bark"


dog = Dog()
dog.show_name()
Dog.print_class_name()
print(dog.make_sound())
